package com.bishe.psy.service;

import com.bishe.psy.model.Article;
import com.bishe.psy.model.LikeArticle;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Created with Intellij IDEA.
 * Description:
 * User: L
 * Date: 2024-04-10
 * Time: 11:42
 */
public interface IArticleService {

    //发布帖子，要将帖子插入到帖子表中，也有更新咨询师表中某个咨询师的帖子数量
    //两条sql语句一起执行，所以用事务管理起来，使用注解Transactional
    @Transactional
    void create (Article article);

    //首页查询显示文章和咨询师信息
    List<Article> selectAll();

    //查询在位的咨询师信息
    List<Article> selectConByIsReign();

    //根据文章id查询某一篇文章的具体信息
    Article selectArticleById(Long id);

    //根据id查询某位在位的咨询师的具体信息
    Article selectConById(@Param("id") Long id);

    //更新帖子内容
    void modifyArticle(Long id, String title, String content);

    //根据文章id查询文章内容
    Article selectByPrimaryKey(Long id);

    //根据id更新文章点赞数量
    void addOneArticleLikeCountById(Long id);

    //根据id减少文章的点赞数量
    void subOneArticleLikeCountById(Long id);

    //根据文章id删除某篇文章
    @Transactional
    void deleteById(Long id);

    //文章回复数量加1方法
    void addOneReplyCountById(Long id);

    //根据用户id查询文章
    List<Article> selectByUserId(Long userId);

}
